폭포수 모델
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
폭포수 모델은 소프트웨어 개발 방법론 중 하나로, 1970년 윈스턴 W. 로이스가 제시한 다이어그램에서 유래되었다. 이 모델은 요구사항 분석, 설계, 구현, 테스트, 운영 및 유지보수 단계를 순차적으로 진행하는 방식을 따른다. 각 단계가 완료되어야 다음 단계로 넘어갈 수 있으며, 초기에 발견된 버그를 수정하는 것이 후반 단계보다 비용 효율적이라는 장점이 있다. 하지만, 실제 프로젝트에서는 요구사항 변경의 어려움, 설계 단계에서의 예측 불가능성 등의 이유로 인해 비판받고 있으며, 이러한 문제점을 해결하기 위해 사시미 모델, 점진적 폭포수 모델 등 다양한 수정 모델이 제시되었다.
더 읽어볼만한 페이지
- 프로젝트 관리 - 계획
계획은 목표 달성을 위한 방법과 절차를 결정하는 과정으로, 개인적 목록 작성부터 국가적 자원 사용, 토지 이용 규제 등 다양한 형태로 나타나며, 상위-하향식, 하위-상향식, PDCA 사이클 등의 방법론을 활용하여 명확한 목표 설정, 효율적인 자원 관리, 위험 관리, 유연성을 필요로 한다. - 프로젝트 관리 - 타당성 조사
타당성 조사는 프로젝트의 진행, 재설계, 포기 여부를 결정하기 위해 4P, 위험 요소 등을 분석하는 보고서로, 5가지 분석틀을 활용하여 사업 발굴부터 운영 관리까지의 절차를 거쳐 기술적, 경제적, 법적, 운영적, 시간적 타당성을 종합적으로 검토한다. - 소프트웨어 개발 철학 - 애자일 소프트웨어 개발
애자일 소프트웨어 개발은 1990년대에 등장하여 개인과 상호작용, 작동하는 소프트웨어, 고객과의 협력, 변화에 대한 대응을 핵심 가치로 삼고 적응형 계획과 반복적 실행을 통해 시장 출시 속도와 위험 완화를 추구하는 소프트웨어 개발 방법론이다. - 소프트웨어 개발 철학 - 유닉스 철학
유닉스 철학은 단순성, 모듈성, 재사용성을 중시하며, 한 가지 일을 잘하는 프로그램, 협력적인 프로그램, 텍스트 스트림 처리 프로그램을 지향하는 소프트웨어 설계 원칙으로, 현대 운영체제 및 소프트웨어 설계에 영향을 주지만 비판도 존재한다. - 디자인 - 대한민국디자인대상
대한민국디자인대상은 디자인 산업 진흥과 디자인 경영 성과를 포상하기 위해 1999년에 제정되어 디자인 경영, 디자인 공로 등 다양한 부문에서 시상한다. - 디자인 - 세계 디자인 수도
국제산업디자인단체협의회가 디자인을 통한 도시 발전과 시민 삶의 질 개선에 기여한 도시를 2년마다 선정하는 세계 디자인 수도는 선정된 도시에서 국제적인 디자인 행사 및 프로그램을 개최하여 디자인의 중요성을 알리고 도시 브랜드를 강화하는 제도이며, 2008년 토리노를 시작으로 2026년 프랑크푸르트 라인마인까지 선정되었다.
폭포수 모델 | |
---|---|
소프트웨어 개발 모델 | |
![]() | |
기본 정보 | |
유형 | 소프트웨어 개발 프로세스 |
설명 | 순차적 소프트웨어 개발 접근 방식 |
역사 | |
최초 설명 | Herbert D. Benington, "대규모 컴퓨터 프로그램 생산", 1956년 공식적인 발표: Winston W. Royce, "소프트웨어 개발 관리", 1970년 |
단계 | |
단계 | 요구 사항 설계 구현 검증 유지보수 |
특징 | |
특징 | 각 단계는 이전 단계가 완료된 후에만 시작 문서 중심적 단계별 검토 및 승인 |
장점 | |
장점 | 단순하고 이해하기 쉬움 관리하기 쉬움 (단계별 완료 및 검토 용이) 명확하게 정의된 단계 쉽게 식별할 수 있는 중간 결과물 프로젝트 요구 사항이 명확하게 정의되고 문서화된 경우에 유용 |
단점 | |
단점 | 요구 사항 변경에 대한 유연성이 부족 프로젝트 후반 단계에서 문제가 발견될 경우 수정 비용이 높음 실제 작동 단계 이전에는 고객에게 실행 가능한 데모를 제공하기 어려움 높은 위험과 불확실성 변화하는 요구 사항에 적합하지 않음 프로젝트 후반 단계에서 문제점을 발견할 경우 수정이 매우 어려움 통합 단계에서 큰 혼란 발생 가능성 테스트 단계가 끝나기 전에는 시스템의 작동 버전을 얻을 수 없음 |
대안 | |
대안 | 반복적 개발 모델 애자일 소프트웨어 개발 |
2. 역사
소프트웨어 공학에서 폭포수 모델과 유사한 단계 사용에 대한 개념은 1950년대부터 나타나기 시작했다. 1956년 6월 29일, 허버트 D. 베닝턴은 디지털 컴퓨터를 위한 고급 프로그래밍 방법론 심포지엄에서 SAGE 소프트웨어 개발에 대한 발표를 통해 이러한 단계를 사용하는 방법을 처음으로 제시했다.[5]
윈스턴 W. 로이스는 1970년 논문에서 "폭포수 모델"로 알려진 프로세스의 상세 다이어그램을 제시했지만,[7][8][9][10] 이 모델의 문제점을 지적하며, 테스트가 마지막에만 진행되면 "위험하고 실패를 초래할 수 있다"고 경고했다.[8]
1985년, 미국 국방부는 DOD-STD-2167 표준에서 소프트웨어 개발 계약자와의 작업에 폭포수 모델을 채택하여 "''소프트웨어 요구 사항 분석, 예비 설계, 상세 설계, 코딩 및 단위 테스트, 통합 및 테스트의 6단계''"를 명시했다.[14][15]
2. 1. 초기 폭포수 모델
허버트 D. 베닝턴은 1956년 6월 29일 디지털 컴퓨터를 위한 고급 프로그래밍 방법론 심포지엄에서 소프트웨어 개발 단계를 처음으로 제시했다.[5] 그는 SAGE 소프트웨어 개발에 대해 발표했는데, 1983년 재발행된 논문에서 작업 전문화에 따라 단계가 구성되었으며, 실제로는 프로토타입에 의존했다고 설명했다.[6]윈스턴 W. 로이스는 1970년 논문에서 "폭포수 모델"로 알려진 프로세스의 상세 다이어그램을 제시했다.[7][8][9][10] 그러나 그는 이 모델의 문제점을 지적하며, 테스트가 마지막에만 진행되면 "위험하고 실패를 초래할 수 있다"고 경고했다.[8] 그는 수정되지 않은 폭포수 접근 방식의 위험을 제거하기 위해 5단계를 추가로 제시했다.[8] 로이스가 제안한 5단계는 주류가 되지 못했지만, 그가 결함이 있다고 여긴 프로세스 다이어그램은 "폭포수" 접근 방식을 설명하는 시작점이 되었다.[11][12]
"폭포수"라는 용어는 1976년 Bell과 Thayer의 논문에서 처음 사용되었을 수 있다.[13] 1985년 미국 국방부는 DOD-STD-2167 표준에서 소프트웨어 개발 계약자와의 작업에 폭포수 모델을 채택했다. 이 표준은 소프트웨어 개발의 반복을 언급하며[14] "''소프트웨어 요구 사항 분석, 예비 설계, 상세 설계, 코딩 및 단위 테스트, 통합 및 테스트의 6단계''"를 명시했다.[14][15]
1968년 북대서양 조약 기구(NATO) 후원 국제 회의에서 폭포수 모델의 원형이 제창되었다.菅野孝男|칸노 타카오일본어 (1996) p=34
"폭포수 모델"이라는 용어는 W. W. 로이스가 1970년에 발표한 논문 "Managing the Development of Large Software Systems"에서 유래한 것으로 알려져 있다. 그러나 해당 논문에는 "폭포수 모델"이라는 용어는 없으며, 이전 단계로의 재검토를 제창하여 원래 논문의 내용과는 차이가 있다.
최초로 "폭포수"라는 용어를 사용한 것은 T.E.Bell과 T.A.Thayer가 1976년에 발표한 논문 "Software Requirement"이며, B.W.Boeham이 1981년에 출판한 책 "Software Engineering Economics"에서 폭포수 모델의 원조는 로이스라고 언급하고 있다.
2. 2. 폭포수 모델 용어의 등장
"폭포수"라는 용어는 1976년 벨(Bell)과 테이어(Thayer)의 논문에서 처음 사용되었을 수 있다.[13]2. 3. 한국에서의 폭포수 모델
미국 국방성이나 NASA에 고용된 대규모 소프트웨어 개발 회사들이 폭포수 모델을 널리 사용하였으며, 그 외에도 다수의 대규모 정부 프로젝트에서 사용되었다. 그러나 이들 업체나 개발자는 순수 폭포수 모델과 변형 모델을 공식적으로 구분하지 않아, 정확히 어떤 모델이 사용되었는지는 파악하기 어렵다.1994년 MIL-STD-498과 1998년 IEEE 12207을 통해 미 국방성은 폭포수 모델의 제약 조건에서 벗어났다.
3. 모델
폭포수 모델은 소프트웨어 개발에 있어 순차적인 단계를 따르는 방식이다. 각 단계는 이전 단계가 완료되어야만 시작할 수 있다는 특징이 있다.
로이스가 제시한 최초의 폭포수 모델은 다음과 같은 단계를 거친다.[16]
# 소프트웨어 요구사항 기술
# 소프트웨어 설계
# 소프트웨어 구현
# 시험과 디버깅
# 설치
# 소프트웨어 유지보수
폭포수 모델에서는 요구사항 확정 후 설계, 설계 완료 후 구현과 같이 한 단계씩 순차적으로 진행한다.
그러나 최초 모델과는 달리, 프로세스 일부를 변형한 다양한 수정 모델들이 존재한다. 로이스의 최종 모델도 그중 하나인데, 하류에서 결함이 발견되면 이전 단계로 돌아가거나, 하류 단계가 불충분하면 설계 단계로 돌아가는 변형이 포함될 수 있다.[8]
폭포수 모델은 이전 단계가 검토 및 검증된 경우에만 다음 단계로 진행하여 공정의 진척 관리가 쉽다는 장점이 있다. IBM의 ADSG(Application Development Standardization Guide, 애플리케이션 개발 표준화 가이드) 등이 폭포수 모델의 예시이다.
"폭포수 모델은 구식이고, 나선형 모델은 새롭다"라고 단순하게 이야기되는 경우도 있지만, 대규모 개발에서는 나선형 모델만으로는 수렴되지 않고 파탄나는 경우가 대부분이기 때문에, 현재도 폭포수 모델과 나선형 모델 등은 조합되어 사용되고 있다.
3. 1. 개발 단계
로이스가 제시한 최초의 폭포수 모델은 순차적인 단계를 따르며, 각 단계는 이전 단계가 완료되어야 진행할 수 있다. 그러나 로이스의 최종 모델을 포함하여 다양한 수정된 폭포수 모델들이 존재하며, 이들은 프로세스에 약간의 또는 주요 변형을 포함할 수 있다.[8]프로젝트에 따라 공정 정의에 차이가 있지만, 일반적인 개발 프로젝트는 다음과 같은 공정으로 진행된다.
단계 | 설명 |
---|---|
요구사항 정의 (요구사항 명세) | 시스템 및 소프트웨어 요구사항을 제품 요구사항 문서에 기록하고, 요구사항 분석을 통해 모델, 스키마, 비즈니스 규칙을 생성한다. |
외부 설계 (개요 설계) | 소프트웨어 아키텍처를 생성한다. |
내부 설계 (상세 설계) | 소프트웨어의 개발, 검증 및 통합을 위한 설계를 구체화한다. |
개발 (프로그래밍) | 실제로 소프트웨어를 코딩하고, 단위 테스트를 통해 검증한다. |
테스트 (소프트웨어) | 체계적인 발견 및 디버깅을 통해 결함을 찾아 수정한다. |
운영 (시스템) | 전체 시스템의 설치, 마이그레이션, 지원 및 유지보수를 수행한다. |
위와 같이 작업 공정(국면, 페이즈)을 톱다운 방식으로 분할하고, 간트 차트를 사용하여 이러한 공정을 한 번에 완료하는 계획을 세우고 진척 관리를 한다. 원칙적으로 이전 공정이 완료되지 않으면 다음 공정으로 진행하지 않으며, 이전 공정의 성과물의 품질을 단계적으로 확보하고 이전 공정으로의 되돌림(재작업)을 최소화한다.
3. 2. 단계별 진행 방식
폭포수 모델은 각 단계가 이전 단계의 완료 후에 순차적으로 진행되는 방식을 따른다. 즉, 이전 단계가 완료되고 검증되어야만 다음 단계로 넘어갈 수 있다.[8] 예를 들어, 요구사항 분석 단계가 완료되어야 설계 단계를 시작할 수 있다.각 단계의 산출물은 명확하게 정의되어야 하며, 이를 통해 품질을 확보하고 후속 단계에서의 재작업을 최소화하는 것을 목표로 한다.
로이스가 제시한 최초의 폭포수 모델의 단계는 다음과 같다.
# 소프트웨어 요구사항 기술
# 소프트웨어 설계
# 소프트웨어 구현
# 시험과 디버깅
# 설치
# 소프트웨어 유지보수
하지만, 최초의 폭포수 모델과는 달리 프로세스의 일부 또는 많은 부분이 변형된 모델들이 존재하며, 로이스의 최종 모델도 그 중 하나이다.[16]
로이스의 최종 모델의 단계는 다음과 같다.
# 시스템 및 소프트웨어 요구사항: 제품 요구사항 문서에 기록
# 요구사항 분석: 모델, 스키마, 비즈니스 규칙 생성
# 소프트웨어 설계: 소프트웨어 아키텍처 생성
# 코딩: 소프트웨어의 개발, 검증 및 통합
# 테스팅: 체계적인 발견 및 디버깅 결함
# 운영: 전체 시스템의 설치, 마이그레이션, 지원 및 유지보수
일반적으로 개발 프로젝트는 다음과 같은 공정으로 진행된다.[8]
# 요구사항 정의
# 외부 설계
# 내부 설계
# 개발
# 테스트
# 운영
이러한 공정들은 간트 차트를 사용하여 한 번에 완료하는 계획을 세우고 진척 관리를 한다. 원칙적으로 이전 공정이 완료되지 않으면 다음 공정으로 진행하지 않는다.
4. 사용 사례
폭포수 모델은 미국 국방성이나 NASA 등 대규모 소프트웨어 개발 기관에서 널리 사용되었으며, 그 외 다수의 대규모 정부 프로젝트에서도 사용되었다. 그러나 이 모델을 사용하는 업체나 개발자들은 순수 폭포수 모델과 변형 모델을 명확히 구분하지 않았기 때문에, 실제로 어떤 모델이 사용되었는지 정확히 파악하기는 어렵다.
미 국방성은 1994년의 MIL-STD-498과 1998년의 IEEE 12207을 통해 폭포수 모델의 제약 조건에서 벗어났다.
4. 1. 대한민국 국방부 및 공공기관
폭포수 모델은 미국 국방성이나 NASA 등 대규모 소프트웨어 개발 기관에서 널리 사용되었으며, 그 외 다수의 대규모 정부 프로젝트에서도 사용되었다. 그러나 이 모델을 사용하는 업체나 개발자들은 순수 폭포수 모델과 변형 모델을 명확히 구분하지 않았기 때문에, 실제로 어떤 모델이 사용되었는지 정확히 파악하기는 어렵다.5. 관련 논의
폭포수 모델은 소프트웨어 개발 초기 단계에 충분한 시간을 투자하여 생명 주기 후반부에 큰 비용 절감 효과를 가져올 수 있다는 경제적 관점에서 논의된다. 초기 단계(요구사항 기술 또는 설계 단계)에서 발견된 버그는 후기에 발견된 버그에 비해 수정하는 데 드는 시간, 비용, 노력이 훨씬 적게 든다. 스티브 맥코넬은 저서 "Rapid Development"에서 요구사항 결함이 구현이나 유지보수 단계까지 발견되지 않으면, 이를 수정하는 비용이 요구사항 기술 시에 수정하는 것에 비해 50배에서 최대 200배까지 증가할 수 있다고 예측했다.[17]
프로그램 설계가 구현 불가능한 경우, 설계 단계에서 수정하는 것은 쉽지만, 몇 달 뒤 구현 및 통합 과정에서 발견되면 그때까지 개발된 모든 것을 버려야 할 수도 있다. 이러한 논의는 사전 대규모 설계 (BDUF)와 폭포수 모델의 핵심 아이디어이다. 따라서 폭포수 모델을 따르는 개발자들은 전 단계가 100% 완료되고 정확하다는 것을 확인한 후에 다음 단계로 진행하고자 한다.
폭포수 모델은 문서화를 강조한다는 점에서도 논의된다. 요구사항 기술, 설계, 소스 코드에 대한 정확하고 완벽한 문서화를 통해 팀 구성원이 변경되어도 프로젝트를 지속하는데 어려움이 없도록 한다.
5. 1. 장점
폭포수 모델은 문서화를 강조하여 팀 구성원이 변경되어도 프로젝트를 지속적으로 진행하는데 따르는 위험을 줄일 수 있다. 잘 설계된 문서가 있다면 새로운 팀원이나 팀이 문서를 통해 프로젝트를 쉽게 이해할 수 있기 때문이다.[19]또한, 폭포수 모델은 구조화된 접근 방식을 제공한다. 각 단계가 명확하게 구분되어 있어 이해와 관리가 용이하며, 개발 과정에서 명확한 이정표를 제공한다. 이러한 특징 때문에 폭포수 모델은 소프트웨어 공학 교육 과정에서 대표적인 예시로 자주 사용된다.[20]
5. 2. 한계
폭포수 모델은 안정적인 요구사항을 기반으로 모든 문제를 예측할 수 있는 설계자가 필요한 프로젝트에 적합할 수 있다. 그러나 구현자들이 설계를 완벽하고 정확하게 구현하지 못하면, 시스템 통합 단계를 수월하게 진행하기 어렵다는 한계가 지적된다.폭포수 모델은 '이전 단계에 실수가 없다'는 것을 전제하거나 기대하지만, 현실적으로 요구사항을 사전에 상세하게 정의하기는 어렵다. 사용자에게 요구사항을 철저하게 확인해도, 이후 단계에서 시스템을 본 사용자가 수정을 요청할 수 있다. 이러한 요구에 응하려면 이전 단계로 돌아가야 하므로, 일정 지연의 원인이 된다.
이러한 문제점을 해결하기 위해, 이전 단계의 완료 조건(예: 요구사항 정의서 완성)의 품질을 철저하게 높여 되돌림 발생률을 최소화하고, 변경 관리를 통해 공식적으로 결정하여 되돌림 및 수평 전개를 확실하게 추적해야 한다. 대규모 개발에서는 시스템을 적절한 서브 시스템 단위로 분할하여 각 단계를 설정하고, 공통된 사양 문제는 선행하는 서브 시스템에서 발견하여 후속 서브 시스템에서 빠르게 변경할 수 있도록 하는 것이 일반적이다.
요구사항 수정 요청을 최소화하기 위해 프로토타입을 작성하기도 하지만, 이를 개발 공정으로 간주하면 폭포수 모델의 원칙에 위배된다는 지적도 있다. 테스트 주도 개발은 착실한 진척을 가능하게 하는 개발 방법이지만, 이 역시 이전 단계가 완료되지 않으면 다음 단계로 진행하지 않는 원칙에 위배된다. 또한 테스트 자동화에 대한 노하우가 필요하다.
6. 폭포수 모델에 대한 비판
폭포수 모델은 실제 프로젝트에서 각 단계를 완벽하게 완료하고 다음 단계로 진행하는 것이 어렵고, 고객의 요구사항 변화에 유연하게 대처하기 어렵다는 비판을 받는다.
의미 있는 규모의 프로젝트에서는 다음 단계에 대한 이해나 경험 없이 각 단계를 완벽히 마무리하는 것은 불가능하다. 예를 들어, 고객들은 동작하는 프로토타입을 보기 전에는 정확히 자신들이 무엇을 원하는지 요구사항으로 정하지 못할 수 있다.[21] 또한 고객들은 정해진 요구사항을 빈번하게 수정하기도 하며, 설계자나 구현자가 이를 통제하기는 어렵다. 설계 완료 후 요구사항이 변경되면, 설계는 새로운 요구사항을 반영해야 하고, 이전까지의 노력은 무위로 돌아간다.
설계자들은 설계 시 향후 구현 작업의 난이도를 예측하기 어렵다.[22] 구현 단계에서 특정 설계의 구현이 불가능하거나 매우 어렵다는 것이 명백해지는 경우가 있을 수 있다. 이 경우, 기존 설계를 유지하기보다 재설계를 하는 것이 더 나은 선택이다.
스티브 맥코넬은 설계나 구현을 끝내기 전에는 완전히 알 수 없는 요구사항이나 제약조건의 문제인 "못된 문제(wicked problem)"를 언급하며, 이 때문에 소프트웨어 개발에서 한 단계만을 완성하는 것은 불가능하고, 폭포수 모델을 사용하는 것도 불가능하다고 지적했다.
데이빗 파나스는 그의 글에서 다음과 같이 썼다.[33]
> “[시스템의] 세부 사항 중 많은 부분은 우리가 [시스템의] 구현을 진행할 때라야 비로소 우리 눈에 보이기 시작한다. 그리고 그렇게 알게 된 것 중 일부는 우리의 기존 설계를 무효로 만들고, 다시 전 단계로 돌아갈 수밖에 없게 만든다.”
폭포수 모델의 "두 번 검토해보고, 한번 실행하라(measure twice; cut once)."는 격언은, 소프트웨어 요구사항이나 문제 자체가 지속적으로 변화하기 때문에 비현실적이라는 비판을 받는다.
미국 국방부 등 일부 조직은 1994년 MIL-STD-498을 시작으로 폭포수 모델에 반대하며, '진화적 획득'과 ''반복적이고 점진적인 개발''을 장려한다.[24]
폭포수 모델에 대한 비판은 다음과 같다.
- "폭포수 모델은 잘못되었고 유해하다. 우리는 이 모델에서 벗어나야 한다."
- "폭포수 접근 방식은 위험하고 문제를 안고 있는 기업의 풍토병이다."
- "폭포수 모델은 질서정연하고, 예측 가능하며, 설명이 가능하고, 측정 가능한 프로세스이며, 문서를 중심으로 한 단순한 마일스톤이 존재한다는 환상을 주었다."
폭포수 모델은 '전(前) 공정에 실수가 없다'는 것을 전제하거나 기대한다는 문제점이 있다.
요구 사항을 사전에 상세하게 정의하는 것은 예전부터, 그리고 현대에도 어렵다고 알려져 있다. 사용자에게 요구 사항을 철저하게 확인했음에도, 하위 공정에서 시스템을 본 사용자로부터 수정 요청이 나올 수 있다. 이 요구에 응하려면 전 공정으로 돌아가야 한다.
폭포수 개발 프로젝트가 성공하려면 과거에 비슷한 프로젝트에서 한 번 실패한 경험이 있어야 한다고 한다. 이는 『사람, 달, 신화』에서도 비판받는 점이다.
6. 1. 비판의 주요 내용
폭포수 모델은 각 단계가 완벽하게 완료되어야 다음 단계로 넘어갈 수 있다는 전제를 가지고 있어, 현실적인 소프트웨어 개발 환경과 맞지 않는다는 비판을 받는다. 주요 비판 내용은 다음과 같다.- 전 단계의 실수가 없다는 전제: 폭포수 모델은 이전 단계, 특히 소프트웨어 요구사항 기술 단계에서 실수가 없어야 한다는 것을 전제로 한다. 하지만 현실에서는 요구사항을 사전에 완벽하게 정의하는 것이 매우 어렵다.[32]
- 요구사항 정의의 어려움: 고객은 실제로 동작하는 소프트웨어를 보기 전까지는 자신이 원하는 바를 정확하게 알지 못하는 경우가 많다. 이로 인해 개발 중간에 요구사항 변경이 빈번하게 발생할 수 있다.[21]
- 전 단계로의 되돌림 문제: 요구사항 변경이나 설계상의 문제 발견 시, 이전 단계로 돌아가 작업을 다시 해야 하는 경우가 발생한다. 이는 일정 지연의 주요 원인이 된다.[33]
- 설계 시 구현 난이도 예측의 어려움: 설계 단계에서는 향후 구현 단계에서 발생할 수 있는 어려움을 예측하기 어렵다. 구현 단계에 이르러서야 특정 설계의 구현이 불가능하거나 매우 어렵다는 것이 명백해지는 경우가 있을 수 있다.[22]
이러한 문제점들 때문에, 스티브 맥코넬과 데이빗 파나스 등 많은 전문가들이 폭포수 모델의 비현실성을 지적해왔다.[33] 심지어 폭포수 모델을 처음 제시한 윈스턴 W. 로이스 박사조차도 이 모델이 "실패를 부를 수 있는 위험한" 사례들을 포함하고 있다고 언급했다.[32]
미국 국방부와 같은 일부 조직은 폭포수 모델 대신 '진화적 획득'과 ''반복적이고 점진적인 개발''을 장려하는 방향으로 전환하고 있다.[24]
7. 수정 모델들
순수 폭포수 모델의 문제점에 대한 대응으로, 다양한 수정 폭포수 모델이 소개되었다. 이러한 수정 모델은 순수 폭포수 모델의 비판을 일부 또는 전부 해결할 수 있다. 스티브 매코넬의 저서 ''Rapid Developement: 프로젝트 쾌속 개발 전략''에서는 다양한 수정 폭포수 모델을 다루고 있다.[17]
이러한 모델에는 스티브 매코넬이 "수정된 폭포수"라고 부르는 급속 개발 모델, 피터 드그레이스의 "사시미 모델"(단계가 겹치는 폭포수 모델) 등이 있다. 그 외에도 하위 프로젝트를 포함하는 폭포수 모델, 위험 감소를 위한 폭포수 모델, "점진적 폭포수 모델"과 같이 다른 소프트웨어 개발 모델과의 조합도 존재한다.[25]
7. 1. 사시미 모델
사시미 모델은 피터 디그레이스가 처음으로 고안하여 소개한 모델로, 각 단계가 겹쳐서 진행된다는 특징을 가진다. (일본의 음식인 사시미가 생선회를 겹쳐 내놓는 것에서 이름이 유래되었다.)[17] 이 모델은 "겹친 단계를 가진 폭포수 모델" 또는 "피드백 있는 폭포수 모델"이라고도 불린다.[17]사시미 모델에서는 각 단계들이 서로 겹쳐 있기 때문에, 문제점에 대한 정보가 이전 단계에서 파악될 수 있다. 예를 들어, 설계와 구현 단계가 겹쳐져서 진행되므로, 구현 상의 문제는 설계가 완료되기 전에 발견된다. 이러한 특징은 폭포수 모델의 한계점을 완화하는 데 도움을 준다.[17]
7. 2. 기타 수정 모델
스티브 매코넬은 "순수" 폭포수 모델의 문제점을 해결하기 위해 다양한 수정 폭포수 모델을 제시했다.[17] 이러한 모델에는 단계가 겹치는 폭포수 모델(피터 드그레이스의 "사시미 모델"), 하위 프로젝트를 포함하는 폭포수 모델, 위험 감소를 위한 폭포수 모델 등이 있다. "점진적 폭포수 모델"과 같이 다른 소프트웨어 개발 모델과의 조합도 존재한다.[25]7. 3. 로이스의 최종 모델
윈스턴 W. 로이스의 최종 모델은 초기 "폭포수 모델"을 개선한 것이다. 코드 테스트에서 설계 결함이 발견되면 설계 단계로, 설계 문제로 인해 요구사항을 충족할 수 없으면 요구사항 명세 단계로 피드백을 보내는 방식을 제안했다. 로이스는 또한 방대한 문서화, "가능하다면 두 번" 작업 (소프트웨어 프로젝트 관리 분야의 명저 《맨먼스 미신》의 저자 프레드 브룩스와 유사한 관점), 고객의 적극적인 참여 (익스트림 프로그래밍과 유사)를 강조했다.로이스의 최종 모델은 다음 내용을 포함한다.
# 분석 및 코딩 전에 완전한 프로그램 설계를 한다.
# 문서는 최신 상태로 완전해야 한다.
# 가능하면 두 번 작업한다.
# 테스트는 계획, 통제, 감시되어야 한다.
# 고객을 참여시킨다.
참조
[1]
서적
Product-Focused Software Process Improvement
Springer Science+Business Media |Springer
2009
[2]
논문
Evolutionary Delivery versus the 'waterfall model'
[3]
논문
Waterfall Model
Springer Science+Business Media |Springer
2013
[4]
간행물
Designing for knowledge maturing: from knowledge-driven software to supporting the facilitation of knowledge development
Association for Computing Machinery |ACM
2014-09-16
[5]
간행물
Symposium on advanced programming methods for digital computers
Office of Naval Research, Dept. of the Navy
1956-06-29
[6]
논문
Production of Large Computer Programs
http://sunset.usc.ed[...]
IEEE Educational Activities Department
2011-03-21
[7]
논문
Iterative and Incremental Development: A Brief History
https://www.craiglar[...]
2003-06
[8]
논문
Managing the Development of Large Software Systems
https://www-scf.usc.[...]
[9]
웹사이트
Waterfall
http://www.informati[...]
[10]
서적
Agile Processes in Software Engineering and Extreme Programming
Springer Science+Business Media |Springer
2008
[11]
웹사이트
Waterfall methodology: there's no such thing!
http://www.idinews.c[...]
[12]
서적
Inheriting Agile: The IT Practitioner's Guide to Managing Software Development in a Post-Agile World
https://books.google[...]
Sandprint Press
2024-04-25
[13]
웹사이트
Software requirements: Are they really a problem?
http://pdf.aminer.or[...]
IEEE Computer Society Press
[14]
서적
DOD-STD-2167 - Military Standard : Defence System Software Development"
Department of Defence, United States of America
1985-06-04
[15]
웹사이트
Military Standard Defense System Software Development
http://www.product-l[...]
[16]
서적
Inheriting Agile: The IT Practitioner's Guide to Managing Software Development in a Post-Agile World
https://books.google[...]
Sandprint Press
2024-04-25
[17]
서적
Rapid Development: Taming Wild Software Schedules
https://archive.org/[...]
Microsoft Press
[18]
웹사이트
Waterfall Software Development Model
http://www.oxagile.c[...]
2014-08-11
[19]
뉴스
Tutorial: The Software Development Life Cycle (SDLC)
http://softwarelifec[...]
2012-11-13
[20]
웹사이트
Comparing Traditional Systems Analysis and Design with Agile Methodologies
http://www.umsl.edu/[...]
University of Missouri – St. Louis
2009
[21]
논문
A rational design process: How and why to fake it
https://www.cs.tufts[...]
2011-03-21
[22]
서적
Code Complete, 2nd edition
https://archive.org/[...]
Microsoft Press
[23]
서적
The Computer Boys Take Over
https://archive.org/[...]
MIT Press
[24]
논문
Iterative and Incremental Development: A Brief History
http://doi.ieeecompu[...]
[25]
웹사이트
Methodology:design methods
http://myprojects.ko[...]
[26]
논문
From Waterfall to Agile software: Development models in the IT sector, 2006 to 2018. Impacts on company management
https://www.ceeol.co[...]
Fundacja Centrum Badań Socjologicznych
2023-09-28
[27]
논문
(PDF) Software Engineering Methodologies: A Review of the Waterfall Model and Object- Oriented Approach
https://www.research[...]
IJSER Publishing
2023-09-28
[28]
서적
Product-Focused Software Process Improvement
Springer
2009
[29]
웹사이트
The Traditional Waterfall Approach
https://www.umsl.edu[...]
2022-02-23
[30]
논문
Production of Large Computer Programs
http://sunset.usc.ed[...]
IEEE Educational Activities Department
2011-03-21
[31]
웹사이트
Wasserfallmodell > Entstehungskontext
http://cartoon.iguw.[...]
Institut für Gestaltungs- und Wirkungsforschung, TU-Wien
[32]
웹사이트
Managing the Development of Large Software Systems
http://www.cs.umd.ed[...]
[33]
웹사이트
A Rational Design Process: How and Why to Fake It
http://web.cs.wpi.ed[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com